package com.flying.inter;

/**
 * @author liupengfei
 * @ClassName: USBTest
 * @Time: 2023-08-11 17:13
 * @Descition 接口的使用
 *
 * 1. 接口的使用也体现了多态性
 * 2. 接口,实际上就是定义了一种规范
 * 3. 开发中,体会面向接口编程
 */
public class USBTest {
    public static void main(String[] args) {
        Computer computer=new Computer();

        // 1. 创建了接口的非匿名实现类的非匿名对象
        Flash flash=new Flash();
        computer.transferData(flash);

        // 2. 创建了接口的非匿名实现类的匿名对象
        computer.transferData(new Printer());

        // 3. 创建了接口的匿名实现类的非匿名对象
        USB mouse=new USB() {
            @Override
            public void start() {
                System.out.println("鼠标开启工作");
            }

            @Override
            public void end() {
                System.out.println("鼠标结束工作");
            }
        };
        computer.transferData(mouse);

        // 4. 创建了接口的匿名实现类的匿名对象
        computer.transferData(new USB() {
            @Override
            public void start() {
                System.out.println("手机开启工作");
            }

            @Override
            public void end() {
                System.out.println("手机结束工作");
            }
        });
    }

}

class Computer {

    public void transferData(USB usb) {   //  USB usb=new Flash();
        usb.start();

        System.out.println("具体的传输细节");

        usb.end();

    }
}

interface USB {
    //  常量:定义长 宽 最大,最小的传输速度等


    void start();

    void end();

}

class Flash implements USB {

    @Override
    public void start() {
        System.out.println("U盘开启工作");
    }

    @Override
    public void end() {
        System.out.println("U盘结束工作");
    }
}


class Printer implements USB {

    @Override
    public void start() {
        System.out.println("打印机开启工作");
    }

    @Override
    public void end() {
        System.out.println("打印机结束工作");
    }
}
